package cn.hs.service.impl;

import cn.hs.entity.CourseType;
import cn.hs.mapper.CourseMapper;
import cn.hs.mapper.CourseTypeMapper;
import cn.hs.service.CourseTypeService;
import cn.hs.util.Result;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Map;

/**
 * @ClassName CourseTypeServiceImpl
 * @Description TODO  课程类型业务层
 * @Author yun
 * @Date 2024年10月23日 14:16
 * @Version 1.0
 */
@Service
public class CourseTypeServiceImpl implements CourseTypeService {

    @Autowired
    private CourseTypeMapper mapper;

    @Autowired
    private CourseMapper courseMapper;

    @Override
    public Result add(CourseType type) {
        if(type == null){
            return Result.error();
        }
        if(mapper.add(type) == 1){
            return Result.success();
        }
        return Result.error();
    }

    @Override
    public Result delete(Integer id) {
//        判断是否存在id
        if(id == null){
            return Result.error();
        }
//        判断courseType是否存在
        if(mapper.selectById(id) == null){
            return Result.error();
        }

//        判断是否存在课程关联
        if(courseMapper.selectCountByTypeId(id) == 0){
            if(mapper.delete(id) == 1){
                return Result.success("已移除课程类别！");
            }
            return Result.error("课程类别已被使用！");
        }
//        先将course的type设置为空
//        int i = courseMapper.updateTypeByTypeId(id);
//
//        if(mapper.delete(id) == 1){
//            return Result.success("已移除"+"个课程的课程类别");
//        }

        return Result.error();
    }

    @Override
    public Result update(CourseType type) {
        if(type == null){
            return Result.error();
        }
        if(mapper.update(type) == 1){
            return Result.success();
        }
        return Result.error();
    }

    @Override
    public Result selectAll(Map<String,Object> map) {
        if(map != null){
            if(map.get("pageNo") != null && map.get("pageSize") != null){
                PageHelper.startPage((Integer) map.get("pageNo"),(Integer) map.get("pageSize"));
            }
        }
        List<CourseType> list = mapper.selectAll(map);
//        添加关联属性courseMount
        for (int i = 0; i < list.size(); i++) {
            list.get(i).setCourseMount(courseMapper.selectCountByTypeId(list.get(i).getId()));
        }

        PageInfo<CourseType> info = new PageInfo<>(list);
        return Result.success(info);
    }

    @Override
    public Result selectById(Integer id) {
        if(id == null){
            return Result.error();
        }
        CourseType courseType = mapper.selectById(id);
        return Result.success(courseType);

    }
}
